package com.hxx.utils;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

public class DBUtils <T>{
    /**
     * 获取数据后封装成对象返回
     * HttpServletRequest获取数据
     */
     public T beanForObject(Class<T> clazz, HttpServletRequest request) {
         T t = null;
         try {
             //创建对象
             t = clazz.newInstance();
             Field[] fields = clazz.getDeclaredFields();
             //遍历所有的属性
             for (Field field : fields) {
                 //设置属性可访问
                 field.setAccessible(true);
                 //获取数据
                 String fieldName = field.getName();
                 //获取数据
                 String value = request.getParameter(fieldName);
                 if (value!=null) {
                     //调用set方法设置属性值
                     Method setMethod = clazz.getMethod("set" +
                             field.getName().substring(0, 1).toUpperCase() +
                             field.getName().substring(1), field.getType());
                     //设置属性值
                     //因为数字类型需要转换
                     String simpleName = field.getType().getSimpleName();
                     if ("Integer".equals(simpleName)) {
                         setMethod.invoke(t, Integer.valueOf(value));
                     } else if ("Double".equals(simpleName)) {
                         setMethod.invoke(t, Double.valueOf(value));
                     } else if ("Float".equals(simpleName)) {
                         setMethod.invoke(t, Float.valueOf(value));
                     } else if ("Long".equals(simpleName)) {
                         setMethod.invoke(t, Long.valueOf(value));
                     } else if ("Boolean".equals(simpleName)) {
                         setMethod.invoke(t, Boolean.valueOf(value));
                     } else {
                         setMethod.invoke(t, field.getType().cast(value));
                     }
                 }
             }
             //获取所有的set方法
         }catch (Exception e) {
             e.printStackTrace();
         }
         return t;
    }
}



























